package com.edu.admin.mapper;


import java.util.List;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import com.edu.admin.common.BaseMapper;
import com.edu.admin.entity.SysUser;
import com.edu.admin.vo.UserVo;

/**
 * 用户表数据操作接口
 * 
 * @author Wangjiong
 * 
 */
@Mapper
public interface UserMapper extends BaseMapper<SysUser> {
	/**
	 * 查询用户信息
	 * 
	 * @param username
	 * @return SysUser
	 */
	SysUser findUserByUsername(@Param("username") String username);
	
	/**
	 * 查询用户信息
	 * 
	 * @param userId
	 * @return UserVo
	 */
	UserVo getUserById(@Param("userId") Long userId);

	/**
	 * 获取学生或教师列表
	 * 
	 * @param type    1：教师  2：学生  3：家长
	 * @param useType
	 * @param schoolId
	 * @param schoolName
	 * @param userName
	 * @param account
	 * 
	 * @return List<UserVo>
	 */
	List<UserVo> findUserListBySchool(@Param("type") Integer type,
											@Param("useType") Integer useType,
											@Param("schoolId")Long schoolId,
											@Param("schoolName")String schoolName,
											@Param("userName") String userName,
											@Param("account")String account,
											@Param("isGraduated") Integer isGraduated);
	
	/**
	 * 获取学生或教师列表
	 * 
	 * @param type    1：教师  2：学生  3：家长
	 * @param schoolId
	 * @param phaseId
	 * @param gradeId
	 * @param classesId
	 * @param userName
	 * @param account
	 * 
	 * @return List<UserVo>
	 */
	List<UserVo> findUserListByClassesId(@Param("type") Integer type,
											@Param("useType") Integer useType,
											@Param("schoolId")Long schoolId,
											@Param("phaseId")Long phaseId,
											@Param("gradeId")Long gradeId,
											@Param("classesId")Long classesId,
											@Param("userName") String userName,
											@Param("account") String account,
											@Param("isGraduated") Integer isGraduated);
	
	/**
	 * 获取学生或教师数
	 * 
	 * @param type    1：教师  2：学生  3：家长
	 * @param schoolId
	 * @param phaseId
	 * @param gradeId
	 * @param classesId

	 * 
	 * @return Integer
	 */
	Integer getUserCount(@Param("type") Integer type,
						@Param("schoolId")Long schoolId,
						@Param("phaseId")Long phaseId,
						@Param("classesId")Long classesId);
		
	
	/**
	 * 获取学生或教师列表
	 * 
	 * @param type    1：教师  2：学生  3：家长
	 * @param schoolId
	 * @param userName
	 * @param account
	 * 
	 * @return
	 */
	List<UserVo> findUserByAccount(@Param("type") Integer type,
									@Param("userId") Long userId,
									@Param("account") String account);
	
	/**
	 * 按学段，学科，姓名查询教师列表
	 * 
	 * @param useType
	 * @param schoolId
	 * @param phaseId
	 * @param subjectId
	 * @param userName
	 * 
	 * @return List<UserVo>
	 */
	List<UserVo> findTeacherListBySubjectId(@Param("useType") Integer useType,
											@Param("schoolId")Long schoolId,
											@Param("phaseId")Long phaseId,
											@Param("subjectId")Long subjectId,
											@Param("userName") String userName);

}
